package main

import (
	"flag"
	"fmt"
	"os"
	"time"
)

func main() {
	flagTypeVar()
}

func flagTypeVar() {
	var (
		name    string
		age     int
		married bool
		delay   time.Duration
	)
	// 定义命令行参数方式1
	flag.StringVar(&name, "name", "张三", "姓名")
	flag.IntVar(&age, "age", 18, "年龄")
	flag.BoolVar(&married, "married", false, "婚否")
	flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")

	// 解析命令行参数
	flag.Parse()
	fmt.Println(name, age, married, delay)
	// 打印命令行参数后的其他参数
	fmt.Println(flag.Args())
	// 打印命令行参数后的其他参数个数
	fmt.Println(flag.NArg())
	// 返回使用命令行参数个数
	fmt.Println(flag.NFlag())
}

func flagType() {
	flag.String("name", "张三", "姓名")
	flag.Int("age", 18, "年龄")
	flag.Duration("time", 0, "时间")
	flag.Parse()

}

func flagDemo() {
	if len(os.Args) > 0 {
		for i, arg := range os.Args {
			fmt.Printf("args[%d]=%v\n", i, arg)
		}
	}

	//输入 ./go_flag 1 23 3
	// 输出
	//args[0]=./go_flag
	//args[1]=1
	//args[2]=23
	//args[3]=3
}
